springboot中使用validation在service层判断参数 - weixin_39655625的博客 - CSDN博客

创建时间:2019/11/14 11:01
来源:https://blog.csdn.net/weixin_39655625/article/details/88621936


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
众所周知,validation在controller层很简单。加一个@Valid,加一个bindingresult就行了。

但是在service里怎么判断,查了半天也没查到例子。

业务场景是,json报文的body部分是整体加密的,所以不可能在controller接收的时候用@Requestbody和@Valid就直接检查了,必须先解密,然后在service层判断。

看了一篇分析validation的文章时,https://www.cnblogs.com/mr-yang-localhost/p/7812038.html,介绍了hibernate的校验模式,于是参考写了一个方法。可以实现valid检查参数的目的。


public static void serviceValid(Object object){
   String validMessage = "";
   //初始化检查器。
   ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
         .configure()
         .failFast( false )
         .buildValidatorFactory();
   Validator validator = validatorFactory.getValidator();
   //检查object
   Set<ConstraintViolation<Object>> set = validator.validate(object);
   //循环set,获取检查结果
   for(ConstraintViolation<Object> voset : set){
      validMessage = validMessage + voset.getMessage() +";";
   }
   if(!StringUtils.isEmpty(validMessage)){
      //抛出业务异常
      throw new XXXException(validMessage);
   }
}
文章最后发布于: 2019-03-17 16:59:25